﻿using WebServiceMGI;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using ComunesMGI.DataTypes;
using System.Collections.Generic;
using ComunesMGI.Enums;
using System;
using System.IO;
using ComunesMGI.Constantes;
using ComunesMGI.Condiciones;

namespace TestWebServiceMGI
{


    /// <summary>
    ///This is a test class for IMGIIncidentesWSTest and is intended
    ///to contain all IMGIIncidentesWSTest Unit Tests
    ///</summary>
    [TestClass()]
    public class IMGIIncidentesWSTest
    {


        private TestContext testContextInstance;

        /// <summary>
        ///Gets or sets the test context which provides
        ///information about and functionality for the current test run.
        ///</summary>
        public TestContext TestContext
        {
            get
            {
                return testContextInstance;
            }
            set
            {
                testContextInstance = value;
            }
        }

        #region Additional test attributes
        // 
        //You can use the following additional attributes as you write your tests:
        //
        //Use ClassInitialize to run code before running the first test in the class
        //[ClassInitialize()]
        //public static void MyClassInitialize(TestContext testContext)
        //{
        //}
        //
        //Use ClassCleanup to run code after all tests in a class have run
        //[ClassCleanup()]
        //public static void MyClassCleanup()
        //{
        //}
        //
        //Use TestInitialize to run code before running each test
        //[TestInitialize()]
        //public void MyTestInitialize()
        //{
        //}
        //
        //Use TestCleanup to run code after each test has run
        //[TestCleanup()]
        //public void MyTestCleanup()
        //{
        //}
        //
        #endregion


        /// <summary>
        ///A test for VisualizarIncidentesAsignados
        ///</summary>
        [TestMethod()]
        public void VisualizarIncidentesAsignadosTest()
        {
            IMGIIncidentesWS target = CreateIMGIIncidentesWS();
            List<int> sistemas = new List<int>();
            sistemas.Add(1);
            string responsable = "PIS20080\\administrator";
            string estado = "En Desarrollo";
            DateTime perFchIni = DateTime.Parse("26/09/2008 19:00:00 p.m.");
            DateTime perFchFin = DateTime.Parse("26/09/2008 19:00:00 p.m.");
            List<DataIncidenteReporte> expected = new List<DataIncidenteReporte>(); 
            DataIncidenteReporte incidente1 = new DataIncidenteReporte("1", "Gabriel", "http://localhost/pis2008/mgi/Lists/Incidentes/DispForm.aspx?ID=9",
                                                                       "PIS20080\\administrator", "IC-Banking", "1", null,
                                                                       DateTime.Parse("2008-09-26T19:00:00"), DateTime.Parse("2008-10-25T00:34:08"), "En Desarrollo");
            expected.Add(incidente1);
            List<DataIncidenteReporte> actual;
            actual = target.VisualizarIncidentesAsignados(sistemas, responsable, estado, perFchIni, perFchFin);
            //Assert.AreEqual(expected, actual);
            Assert.Inconclusive("Verify the correctness of this test method.");
        }

        /// <summary>
        ///A test for AddWorkPackage
        ///</summary>
        [TestMethod()]
        public void AddWorkPackageTest()
        {
            IMGIIncidentesWS target = CreateIMGIIncidentesWS();
            int idSistema = 1;
            DataWP workPackage = new DataWP("WorkPackage2", DateTime.Today, DateTime.Today);
            int expected = 1;
            int actual;
            actual = target.AddWorkPackage(idSistema, workPackage);
            Assert.AreEqual(expected, actual);
            workPackage.Id = expected;
            workPackage.IdSistema = idSistema;
            workPackage.EsfuerzoRestante = 0;
            workPackage.EsfuerzoTotal = 0;
            workPackage.Estado = new DataEstadoWP(1, "BackLog", false);
            workPackage.FechaEntrega = ConstantesMGI.FechaVacia;
            List<DataWP> workPackages = target.GetWorkPackages(1);
            CollectionAssert.Contains(workPackages, workPackage);
        }

        /// <summary>
        ///A test for ModificarWP
        ///</summary>
        [TestMethod()]
        public void ModificarWPTest()
        {
            IMGIIncidentesWS target = CreateIMGIIncidentesWS();
            DataEstadoWP estadoWP = new DataEstadoWP(2, "Planning", false);
            DataWP wp = new DataWP(2, "wp2", DateTime.Parse("1900-01-01T00:00:00"), DateTime.Parse("1900-01-01T00:00:00"),
                                   DateTime.Parse("2008-10-26T21:08:44"), DateTime.Parse("1900-01-01T00:00:00"), estadoWP, 1);
            bool cerrarTodo = false;
            target.ModificarWP(wp, cerrarTodo);
            DataWP wpModificado = target.GetWorkPackages(1).FindLast(dWP => dWP.Id == 2);
            Assert.IsTrue(wpModificado.FechaEntrega.Equals(DateTime.Parse("2008-10-26T21:08:44")) && wpModificado.Estado.Estado == "Planning");
        }


        /// <summary>
        ///A test for GetWorkPackages
        ///</summary>
        [TestMethod()]
        public void GetWorkPackagesTest()
        {
            IMGIIncidentesWS target = CreateIMGIIncidentesWS();
            int sisCod = 1;
            DataWP data = new DataWP("wp1", DateTime.Parse("2008-10-26T21:08:44"), DateTime.Parse("2008-10-31T21:08:44"));
            target.AddWorkPackage(sisCod, data);
            DataWP data2 = new DataWP("wp2", ConstantesMGI.FechaVacia, ConstantesMGI.FechaVacia);
            target.AddWorkPackage(sisCod, data2);
            List<DataWP> expected = new List<DataWP>();
            expected.Add(data);
            expected.Add(data2);
            List<DataWP> actual;
            actual = target.GetWorkPackages(sisCod);
            CollectionAssert.Equals(expected, actual);

        }

        /// <summary>
        ///A test for GetTareas
        ///</summary>
        [TestMethod()]
        public void GetTareasTest()
        {
            IMGIIncidentesWS target = CreateIMGIIncidentesWS();
            int idSistema = 1;
            int idIncidente = 9;
            List<DataTarea> expected = new List<DataTarea>();
            DataTarea tarea1 = new DataTarea("1", "Integrar");
            expected.Add(tarea1);
            DataTarea tarea2 = new DataTarea("5", "Tarea Domingo");
            expected.Add(tarea2);
            List<DataTarea> actual;
            actual = target.GetTareas(idSistema, idIncidente);
            CollectionAssert.AreEqual(expected, actual);
        }

        /// <summary>
        ///A test for GetIncidentesWP
        ///</summary>
        [TestMethod()]
        public void GetIncidentesWPTest()
        {
            IMGIIncidentesWS target = CreateIMGIIncidentesWS();
            int idSistema = 1;
            int idWorkPackage = 1;
            List<DataIncidente> expected = new List<DataIncidente>();
            DataIncidente incidente1 = new DataIncidente(9, "Gabriel");
            expected.Add(incidente1);
            DataIncidente incidente2 = new DataIncidente(16, "Magdalena");
            expected.Add(incidente2);
            List<DataIncidente> actual;
            actual = target.GetIncidentesWP(idSistema, idWorkPackage);
            CollectionAssert.AreEqual(expected, actual);
        }

        /// <summary>
        ///A test for GetIncidentesCerradosPeriodo
        ///</summary>
        [TestMethod()]
        public void GetIncidentesCerradosPeriodoTest()
        {
            IMGIIncidentesWS target = CreateIMGIIncidentesWS(); // TODO: Initialize to an appropriate value
            List<int> sistemas = null; // TODO: Initialize to an appropriate value
            DateTime perFchIni = new DateTime(); // TODO: Initialize to an appropriate value
            DateTime perFchFin = new DateTime(); // TODO: Initialize to an appropriate value
            List<DataIncidenteReporte> expected = null; // TODO: Initialize to an appropriate value
            List<DataIncidenteReporte> actual;
            actual = target.GetIncidentesCerradosPeriodo(sistemas, perFchIni, perFchFin);
            Assert.AreEqual(expected, actual);
            Assert.Inconclusive("Verify the correctness of this test method.");
        }



        /// <summary>
        ///A test for GetEstadosWP
        ///</summary>
        [TestMethod()]
        public void GetEstadosWPTest()
        {
            IMGIIncidentesWS target = CreateIMGIIncidentesWS(); // TODO: Initialize to an appropriate value
            List<DataEstadoWP> expected = new List<DataEstadoWP>();
            DataEstadoWP da = new DataEstadoWP(1, "BackLog", false);
            expected.Add(da);
            DataEstadoWP da2 = new DataEstadoWP(2, "Planning", false);
            expected.Add(da2);
            DataEstadoWP da3 = new DataEstadoWP(3, "Implementing", false);
            expected.Add(da3);
            DataEstadoWP da4 = new DataEstadoWP(4, "Testing", false);
            expected.Add(da4);
            DataEstadoWP da5 = new DataEstadoWP(5, "Validation", false);
            expected.Add(da5);
            DataEstadoWP da6 = new DataEstadoWP(6, "Demo", false);
            expected.Add(da6);
            DataEstadoWP da7 = new DataEstadoWP(7, "Cerrado", true);
            expected.Add(da7);

            List<DataEstadoWP> actual;
            actual = target.GetEstadosWP();
            CollectionAssert.Equals(expected, actual);

        }

        /// <summary>
        ///A test for GetCampos
        ///</summary>
        [TestMethod()]
        public void GetCamposTest()
        {
            IMGIIncidentesWS target = CreateIMGIIncidentesWS();
            int idSistema = 1;
            List<DataCampo> campos = new List<DataCampo>();
            DataCampo campo1 = new DataCampo(CampoSharepoint.Text, "Título", ParteMail.Subject, null, true, null);
            campos.Add(campo1);
            DataCampo campo2 = new DataCampo(CampoSharepoint.Note, "Descripción", ParteMail.Body, null, false, null);
            campos.Add(campo2);
            DataCampo campo3 = new DataCampo(CampoSharepoint.DateTime, "Fecha Propuesto", ParteMail.Ninguno, "[today]", true, null);
            campos.Add(campo3);
            List<string> opcionesCampo4 = new List<string>();
            opcionesCampo4.Add("Christian Oroza");
            opcionesCampo4.Add("Marcelo Suarez");
            DataCampo campo4 = new DataCampo(CampoSharepoint.Choice, "Reportado por", ParteMail.Ninguno, "Christian Oroza", true, opcionesCampo4);
            campos.Add(campo4);
            DataCampo campo5 = new DataCampo(CampoSharepoint.User, "Asignado a", ParteMail.Ninguno, null, false, null);
            campos.Add(campo5);
            List<string> opcionesCampo6 = new List<string>();
            opcionesCampo6.Add("Propuesto");
            opcionesCampo6.Add("En Desarrollo");
            opcionesCampo6.Add("En Validación");
            opcionesCampo6.Add("Pendiente a Producción");
            opcionesCampo6.Add("Cerrado");
            opcionesCampo6.Add("Cancelado");
            opcionesCampo6.Add("En espera");
            DataCampo campo6 = new DataCampo(CampoSharepoint.Choice, "Estado", ParteMail.Ninguno, "Propuesto", true, opcionesCampo6);
            campos.Add(campo6);
            List<string> opcionesCampo7 = new List<string>();
            opcionesCampo7.Add("Error");
            opcionesCampo7.Add("Cambio");
            opcionesCampo7.Add("Soporte");
            DataCampo campo7 = new DataCampo(CampoSharepoint.Choice, "Categoría", ParteMail.Body, "Error", true, opcionesCampo7);
            campos.Add(campo7);
            List<string> opcionesCampo8 = new List<string>();
            opcionesCampo8.Add("Urgente");
            opcionesCampo8.Add("Alta");
            opcionesCampo8.Add("Media");
            opcionesCampo8.Add("Baja");
            DataCampo campo8 = new DataCampo(CampoSharepoint.Choice, "Prioridad", ParteMail.Ninguno, "Alta", true, opcionesCampo8);
            campos.Add(campo8);
            DataCampo campo9 = new DataCampo(CampoSharepoint.Number, "Orden Prioridad", ParteMail.Ninguno, null, true, null);
            campos.Add(campo9);
            DataCampo campo10 = new DataCampo(CampoSharepoint.Note, "Comentario", ParteMail.Ninguno, null, false, null);
            campos.Add(campo10);
            DataCampo campo11 = new DataCampo(CampoSharepoint.DateTime, "Fecha Cierre", ParteMail.Date, null, false, null);
            campos.Add(campo11);
            List<DataCampo> actual;
            actual = target.GetCampos(idSistema, Lista.Incidentes);
            CollectionAssert.AreEqual(campos, actual);
        }

        /// <summary>
        ///A test for ChkWpIncidentesOTareasSinCerrar
        ///</summary>
        [TestMethod()]
        public void ChkWpIncidentesOTareasSinCerrarTest()
        {
            IMGIIncidentesWS target = CreateIMGIIncidentesWS(); // TODO: Initialize to an appropriate value
            int wkpCod = 7;
            bool expected = true;
            //para que funcione el work package con codigo 7 debe tener algun incidente asignado sin cerrar
            bool actual;
            actual = target.ChkWpIncidentesOTareasSinCerrar(wkpCod);
            Assert.AreEqual(expected, actual);

        }


        ///A test for ChkWpIncidentesOTareasSinCerrar
        ///</summary>
        [TestMethod()]
        public void ChkWpIncidentesOTareasSinCerrarTest2()
        {
            IMGIIncidentesWS target = CreateIMGIIncidentesWS(); // TODO: Initialize to an appropriate value
            int wkpCod = 6;
            bool expected = false;
            //para que funcione el work package con codigo 6 no debe tener algun incidente asignado sin cerrar
            bool actual;
            actual = target.ChkWpIncidentesOTareasSinCerrar(wkpCod);
            Assert.AreEqual(expected, actual);

        }
        /// <summary>
        ///A test for AsociarIncidentesWP
        ///</summary>
        [TestMethod()]
        public void AsociarIncidentesWPTest()
        {
            IMGIIncidentesWS target = CreateIMGIIncidentesWS();
            int idSistema = 1;
            int idWorkPackage = 1;
            List<int> incidentes = new List<int>();
            incidentes.Add(9);
            target.AsociarIncidentesWP(idSistema, idWorkPackage, incidentes);
            Assert.IsTrue(target.GetIncidentesWP(idSistema, idWorkPackage).Find(incidente => incidente.IdIncidente == 9) != null);

        }

        /// <summary>
        ///A test for AsignarResponsable
        ///</summary>
        [TestMethod()]
        public void AsignarResponsableTest()
        {
            IMGIIncidentesWS target = CreateIMGIIncidentesWS();
            int idSistema = 1;
            int idIncidente = 9;
            DataTarea tarea = new DataTarea("1", "Integrar");
            DataUsuario usuario = new DataUsuario("PIS20080\\administrator");
            bool expected = true;
            bool actual;
            actual = target.AsignarResponsable(idSistema, idIncidente, tarea, usuario);
            Assert.AreEqual(expected, actual);
        }

        /// <summary>
        ///A test for AdjuntarArchivoIncidente
        ///</summary>
        [TestMethod()]
        public void AdjuntarArchivoIncidenteTest()
        {
            IMGIIncidentesWS target = CreateIMGIIncidentesWS(); // TODO: Initialize to an appropriate value
            string nombreArchivo = string.Empty; // TODO: Initialize to an appropriate value
            int idSistema = 0; // TODO: Initialize to an appropriate value
            int idIncidente = 0; // TODO: Initialize to an appropriate value
            string nroTemp = string.Empty; // TODO: Initialize to an appropriate value
            bool expected = false; // TODO: Initialize to an appropriate value
            bool actual;
            actual = target.AdjuntarArchivoIncidente(nombreArchivo, idSistema, idIncidente, nroTemp);
            Assert.AreEqual(expected, actual);
            Assert.Inconclusive("Verify the correctness of this test method.");
        }

       

        /// <summary>
        ///A test for AddTarea
        ///</summary>
        [TestMethod()]
        public void AddTareaTest()
        {
            IMGIIncidentesWS target = CreateIMGIIncidentesWS(); // TODO: Initialize to an appropriate value
            int idSistema = 1;
            int idIncidente = 1;

            int idTarea = 11;
            List<DataCampo> campos = new List<DataCampo>();

            DataCampo campo1 = new DataCampo(CampoSharepoint.Text, "Título", ParteMail.Ninguno, "Horacio morochito Tarea", true, null);
            DataCampo campo2 = new DataCampo(CampoSharepoint.Text, "Prioridad", ParteMail.Ninguno, "10", true, null);
            DataCampo campo3 = new DataCampo(CampoSharepoint.Text, "Estado", ParteMail.Ninguno, "10", true, null);
            DataCampo campo4 = new DataCampo(CampoSharepoint.Text, "% Completado", ParteMail.Ninguno, "10", true, null);
            DataCampo campo5 = new DataCampo(CampoSharepoint.Text, "Asignado a", ParteMail.Ninguno, "PIS20080\administrador", true, null);
            DataCampo campo6 = new DataCampo(CampoSharepoint.Note, "Descripción", ParteMail.Ninguno, "10", true, null);
            DataCampo campo7 = new DataCampo(CampoSharepoint.DateTime, "Fecha de comienzo", ParteMail.Ninguno, "31/12/2008", true, null);
            DataCampo campo8 = new DataCampo(CampoSharepoint.DateTime, "Fecha de vencimiento", ParteMail.Ninguno, "31/12/2008", true, null);
            //          DataCampo campo9 = new DataCampo(CampoSharepoint.Text, "IDOriginal", ParteMail.Ninguno, "1", true, null);
            DataCampo campo10 = new DataCampo(CampoSharepoint.DateTime, "Fecha Estimada Fin", ParteMail.Ninguno, "01/01/2009", true, null);
            //          DataCampo campo11 = new DataCampo(CampoSharepoint.Text, "Esfuerzo Estimado", ParteMail.Ninguno, "1", true, null);
            //          DataCampo campo12 = new DataCampo(CampoSharepoint.Text, "Esfuerzo Restante", ParteMail.Ninguno, "1", true, null);
            campos.Add(campo1);
            campos.Add(campo2);
            campos.Add(campo3);
            campos.Add(campo4);
            campos.Add(campo5);
            campos.Add(campo6);
            campos.Add(campo7);
            campos.Add(campo8);
            //          campos.Add(campo9); // este no va
            campos.Add(campo10);
            //          campos.Add(campo11);
            //          campos.Add(campo12);


            List<DataTarea> existentes = target.GetTareas(1, 1);
            DataAltaTarea actual = target.AddTarea(idSistema, idIncidente, campos);
            List<DataTarea> actuales = target.GetTareas(1, 1);
            foreach (DataTarea dtex in existentes)
            {
                actuales.Remove(dtex);
            }

            Assert.AreEqual(actuales.Count, 1);
            Assert.Inconclusive("Verify the correctness of this test method.");
        }

        internal virtual IMGIIncidentesWS CreateIMGIIncidentesWS()
        {
            // TODO: Instantiate an appropriate concrete class.
            IMGIIncidentesWS target = new MGIIncidentesWS();
            return target;
        }

        /// <summary>
        ///A test for AddIncidente
        ///</summary>
        [TestMethod()]
        public void AddIncidenteTest()
        {
            IMGIIncidentesWS target = CreateIMGIIncidentesWS(); // TODO: Initialize to an appropriate value

            List<DataCampo> campos = new List<DataCampo>();
            DataCampo campo1 = new DataCampo(CampoSharepoint.Text, "Título", ParteMail.Subject, "Incidente nuevo", true, null);
            campos.Add(campo1);
            DataCampo campo2 = new DataCampo(CampoSharepoint.Note, "Descripción", ParteMail.Body, "Incidente nuevo!!!", false, null);
            campos.Add(campo2);
            DataCampo campo3 = new DataCampo(CampoSharepoint.DateTime, "Fecha Propuesto", ParteMail.Ninguno, "26/10/2008 07:00:00 p.m.", true, null);
            campos.Add(campo3);
            DataCampo campo4 = new DataCampo(CampoSharepoint.Choice, "Reportado por", ParteMail.Ninguno, "Christian Oroza", true, null);
            campos.Add(campo4);
            DataCampo campo5 = new DataCampo(CampoSharepoint.User, "Asignado a", ParteMail.Ninguno, "PIS20080\\administrator", false, null);
            campos.Add(campo5);
            DataCampo campo6 = new DataCampo(CampoSharepoint.Choice, "Estado", ParteMail.Ninguno, "Propuesto", true, null);
            campos.Add(campo6);
            DataCampo campo7 = new DataCampo(CampoSharepoint.Choice, "Categoría", ParteMail.Body, "Error", true, null);
            campos.Add(campo7);
            DataCampo campo8 = new DataCampo(CampoSharepoint.Choice, "Prioridad", ParteMail.Ninguno, "Media", true, null);
            campos.Add(campo8);
            DataCampo campo9 = new DataCampo(CampoSharepoint.Number, "Orden Prioridad", ParteMail.Ninguno, "1", true, null);
            campos.Add(campo9);
            DataCampo campo10 = new DataCampo(CampoSharepoint.Note, "Comentario", ParteMail.Ninguno, "", false, null);
            campos.Add(campo10);
            DataCampo campo11 = new DataCampo(CampoSharepoint.DateTime, "Fecha Cierre", ParteMail.Date, "20/11/2008 12:00:00 a.m.", false, null);
            campos.Add(campo11);
            DataAltaIncidente actual;

            DataSistema incidente = new DataSistema(1, "IC-Banking", "http://localhost/pis2008/mgi", 1, "http://localhost:9000/"); // TODO: Initialize to an appropriate value
            incidente.Campos = campos;
            actual = target.AddIncidente(incidente);
            List<DataIncidente> incidentes = target.GetIncidentes(1, null);
            List<int> idsIncidentes = new List<int>();
            foreach (DataIncidente inc in incidentes)
            {
                idsIncidentes.Add(inc.IdIncidente);
            }
            CollectionAssert.Contains(idsIncidentes, actual.IdIncidente);
        }

        /// <summary>
        ///A test for GetIncidente
        ///</summary>
        [TestMethod()]
        public void GetIncidenteTest()
        {
            IMGIIncidentesWS target = CreateIMGIIncidentesWS();
            int idIncidente = 9;
            int idSistema = 1;
            List<DataCampo> campos = new List<DataCampo>();
            DataCampo campo1 = new DataCampo(CampoSharepoint.Text, "Título", ParteMail.Subject, "Gabriel", true, null);
            campos.Add(campo1);
            DataCampo campo2 = new DataCampo(CampoSharepoint.Note, "Descripción", ParteMail.Body, "", false, null);
            campos.Add(campo2);
            DataCampo campo3 = new DataCampo(CampoSharepoint.DateTime, "Fecha Propuesto", ParteMail.Ninguno, "26/09/2008 07:00:00 p.m.", true, null);
            campos.Add(campo3);
            List<string> opcionesCampo4 = new List<string>();
            opcionesCampo4.Add("Christian Oroza");
            opcionesCampo4.Add("Marcelo Suarez");
            DataCampo campo4 = new DataCampo(CampoSharepoint.Choice, "Reportado por", ParteMail.Ninguno, "Christian Oroza", true, opcionesCampo4);
            campos.Add(campo4);
            DataCampo campo5 = new DataCampo(CampoSharepoint.User, "Asignado a", ParteMail.Ninguno, "PIS20080\\administrator", false, null);
            campos.Add(campo5);
            List<string> opcionesCampo6 = new List<string>();
            opcionesCampo6.Add("Propuesto");
            opcionesCampo6.Add("En Desarrollo");
            opcionesCampo6.Add("En Validación");
            opcionesCampo6.Add("Pendiente a Producción");
            opcionesCampo6.Add("Cerrado");
            opcionesCampo6.Add("Cancelado");
            opcionesCampo6.Add("En espera");
            DataCampo campo6 = new DataCampo(CampoSharepoint.Choice, "Estado", ParteMail.Ninguno, "En Desarrollo", true, opcionesCampo6);
            campos.Add(campo6);
            List<string> opcionesCampo7 = new List<string>();
            opcionesCampo7.Add("Error");
            opcionesCampo7.Add("Cambio");
            opcionesCampo7.Add("Soporte");
            DataCampo campo7 = new DataCampo(CampoSharepoint.Choice, "Categoría", ParteMail.Body, "Error", true, opcionesCampo7);
            campos.Add(campo7);
            List<string> opcionesCampo8 = new List<string>();
            opcionesCampo8.Add("Urgente");
            opcionesCampo8.Add("Alta");
            opcionesCampo8.Add("Media");
            opcionesCampo8.Add("Baja");
            DataCampo campo8 = new DataCampo(CampoSharepoint.Choice, "Prioridad", ParteMail.Ninguno, "Alta", true, opcionesCampo8);
            campos.Add(campo8);
            DataCampo campo9 = new DataCampo(CampoSharepoint.Number, "Orden Prioridad", ParteMail.Ninguno, "1", true, null);
            campos.Add(campo9);
            DataCampo campo10 = new DataCampo(CampoSharepoint.Note, "Comentario", ParteMail.Ninguno, "", false, null);
            campos.Add(campo10);
            DataCampo campo11 = new DataCampo(CampoSharepoint.DateTime, "Fecha Cierre", ParteMail.Date, "26/09/2008 12:00:00 a.m.", false, null);
            campos.Add(campo11);
            DataIncidenteConCampos expected = new DataIncidenteConCampos(9, "Gabriel", campos);
            DataIncidenteConCampos actual;
            actual = target.GetIncidente(idIncidente, idSistema);
            Assert.AreEqual(expected, actual);
        }

        /// <summary>
        ///A test for ModificarIncidente
        ///</summary>
        [TestMethod()]
        public void ModificarIncidenteTest()
        {
            IMGIIncidentesWS target = CreateIMGIIncidentesWS();
            int idSistema = 1;
            List<DataCampo> campos = new List<DataCampo>();
            DataCampo campo1 = new DataCampo(CampoSharepoint.Text, "Título", ParteMail.Subject, "Gabriel", true, null);
            campos.Add(campo1);
            DataCampo campo2 = new DataCampo(CampoSharepoint.Note, "Descripción", ParteMail.Body, "", false, null);
            campos.Add(campo2);
            DataCampo campo3 = new DataCampo(CampoSharepoint.DateTime, "Fecha Propuesto", ParteMail.Ninguno, "26/09/2008 07:00:00 p.m.", true, null);
            campos.Add(campo3);
            List<string> opcionesCampo4 = new List<string>();
            opcionesCampo4.Add("Christian Oroza");
            opcionesCampo4.Add("Marcelo Suarez");
            DataCampo campo4 = new DataCampo(CampoSharepoint.Choice, "Reportado por", ParteMail.Ninguno, "Marcelo Suarez", true, opcionesCampo4);
            campos.Add(campo4);
            DataCampo campo5 = new DataCampo(CampoSharepoint.User, "Asignado a", ParteMail.Ninguno, "PIS20080\\administrator", false, null);
            campos.Add(campo5);
            List<string> opcionesCampo6 = new List<string>();
            opcionesCampo6.Add("Propuesto");
            opcionesCampo6.Add("En Desarrollo");
            opcionesCampo6.Add("En Validación");
            opcionesCampo6.Add("Pendiente a Producción");
            opcionesCampo6.Add("Cerrado");
            opcionesCampo6.Add("Cancelado");
            opcionesCampo6.Add("En espera");
            DataCampo campo6 = new DataCampo(CampoSharepoint.Choice, "Estado", ParteMail.Ninguno, "En Desarrollo", true, opcionesCampo6);
            campos.Add(campo6);
            List<string> opcionesCampo7 = new List<string>();
            opcionesCampo7.Add("Error");
            opcionesCampo7.Add("Cambio");
            opcionesCampo7.Add("Soporte");
            DataCampo campo7 = new DataCampo(CampoSharepoint.Choice, "Categoría", ParteMail.Body, "Error", true, opcionesCampo7);
            campos.Add(campo7);
            List<string> opcionesCampo8 = new List<string>();
            opcionesCampo8.Add("Urgente");
            opcionesCampo8.Add("Alta");
            opcionesCampo8.Add("Media");
            opcionesCampo8.Add("Baja");
            DataCampo campo8 = new DataCampo(CampoSharepoint.Choice, "Prioridad", ParteMail.Ninguno, "Alta", true, opcionesCampo8);
            campos.Add(campo8);
            DataCampo campo9 = new DataCampo(CampoSharepoint.Number, "Orden Prioridad", ParteMail.Ninguno, "10", true, null);
            campos.Add(campo9);
            DataCampo campo10 = new DataCampo(CampoSharepoint.Note, "Comentario", ParteMail.Ninguno, "", false, null);
            campos.Add(campo10);
            DataCampo campo11 = new DataCampo(CampoSharepoint.DateTime, "Fecha Cierre", ParteMail.Date, "25/10/2008 12:34:08 a.m.", false, null);
            campos.Add(campo11);
            DataIncidenteConCampos incidente = new DataIncidenteConCampos(9, "Gabriel", campos);
            target.ModificarIncidente(idSistema, incidente);
            DataIncidenteConCampos actual = target.GetIncidente(incidente.IdIncidente, idSistema);
            Assert.AreEqual(incidente, actual);
        }

        /// <summary>
        ///Un test para DesasociarIncidentesWP 
        ///
        /// Se testea desasociar un incidente de id 1 y 2 de un workpackage id 1
        /// siendo estos dos los únicos asignados al workpackage
        /// 
        ///</summary>
        [TestMethod()]
        public void DesasociarIncidentesWPTest()
        {
            int idWP;
            List<int> idsIncidentes = new List<int>();

            idWP = 1;
            idsIncidentes.Add(1);
            idsIncidentes.Add(2);

            IMGIIncidentesWS target = CreateIMGIIncidentesWS(); // TODO: Initialize to an appropriate value

            DataIncidente dataIncidente1 = target.GetIncidente(1, 1);
            DataIncidente dataIncidente2 = target.GetIncidente(2, 1);
            List<DataIncidente> incidentes = target.GetIncidentesWP(1, 1);

            //si los incidentes 1 y 2 estan asignados al wp 1
            if (incidentes.Exists(incidente => incidente.IdIncidente == 1) &&
                incidentes.Exists(incidente => incidente.IdIncidente == 2))
            {
                target.DesasociarIncidentesWP(idWP, idsIncidentes);
                List<DataIncidente> actual = target.GetIncidentesWP(1, 1);
                List<DataIncidente> esperada = new List<DataIncidente>();
                CollectionAssert.AreEqual(actual, esperada);
            }
            else
            {
                Assert.Inconclusive("No se cumplen las condiciones en los incidentes y wp del test");
            }
        }


        /// <summary>
        ///A test for GetIncidentes
        ///</summary>
        [TestMethod()]
        public void GetIncidentesTest()
        {
            IMGIIncidentesWS target = CreateIMGIIncidentesWS();
            int idSistema = 1;
            List<Condicion> condiciones = null;
            List<DataIncidente> expected = new List<DataIncidente>();
            DataIncidente incidente1 = new DataIncidente(9, "Gabriel");
            expected.Add(incidente1);
            DataIncidente incidente2 = new DataIncidente(16, "Magdalena");
            expected.Add(incidente2);
            DataIncidente incidente3 = new DataIncidente(22, "Morochito");
            expected.Add(incidente3);
            DataIncidente incidente4 = new DataIncidente(27, "Incidente 1");
            expected.Add(incidente4);
            List<DataIncidente> actual;
            actual = target.GetIncidentes(idSistema, condiciones);
            CollectionAssert.AreEqual(expected, actual);

        }

        /// <summary>
        ///A test for GetIncidentesAsignablesWP
        ///</summary>
        [TestMethod()]
        public void GetIncidentesAsignablesWPTest()
        {
            IMGIIncidentesWS target = CreateIMGIIncidentesWS(); // TODO: Initialize to an appropriate value
            int wkpCod = 2; // TODO: Initialize to an appropriate value
            List<DataIncidente> expected = new List<DataIncidente>(); // TODO: Initialize to an appropriate value
            DataIncidente di1 = new DataIncidente(6, "Mensaje de prueba de Microsoft Office Outlook");
            DataIncidente di2 = new DataIncidente(7, "Titulo");
            DataIncidente di3 = new DataIncidente(31, "Mail con adjuntos");
            DataIncidente di4 = new DataIncidente(45, "Titulo incidente");
            expected.Add(di1);
            expected.Add(di2);
            expected.Add(di3);
            expected.Add(di4);
            List<DataIncidente> actual;
            actual = target.GetIncidentesAsignablesWP(wkpCod);
            CollectionAssert.AreEqual(expected, actual);
        }
    }
}
